1
Arquitetura Interna: ponteiros klass e super
AI035Lesson 14
00:00

No nível C, os objetos Ruby são representados por estruturas que separam dados do comportamento por meio de uma hierarquia baseada em ponteiros. O klass ponteiro conecta uma instância à sua "classe associada" (onde os métodos residem), enquanto o super ponteiro conecta classes aos seus ancestrais, criando um mapa estrutural que a máquina virtual Ruby usa para resolver a herança.

1. O ponteiro klass e os flags

Todo objeto Ruby contém um cabeçalho com um klass ponteiro e uma máscara de flags. Esses flags identificam o estado interno do objeto, como marcar classes "virtuais" automaticamente criadas com um 'V' para lidar com atribuições de métodos singleton.

2. Desacoplamento de Estado (Figura 24.1)

Uma instância como lucille armazena suas próprias variáveis instância, mas não possui métodos próprios. Seu klass ponteiro direciona a VM para a Guitar tabela de métodos do objeto da classe.

lucille@valorClasse: Guitartocar()cordas()VClasse: Objetoclonar(), duplicar()klasssuper

3. A Cadeia de Herança

Quando lucille.tocar() é chamado, o Ruby segue o klass ponteiro. Se o método não for encontrado em Guitar, ele segue o super ponteiro até Objeto, concedendo acesso a clonar ou duplicar.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>